﻿/*
---------------------------------
    Rodeo Game Engine

    Rodeo Core Module
    SceneManager.h - header file

    Copyright(c) Marcin Goryca
---------------------------------
*/
#ifndef RODEO_CORE_SCENEMANAGER_H_
#define RODEO_CORE_SCENEMANAGER_H_

#ifndef RODEO_CORE_ERROR_H_
#include "core\error.h"
#endif    //RODEO_CORE_ERROR_H_

#ifndef RODEO_CORE_SINGLETON_H_
#include "core\singleton.h"
#endif    //RODEO_CORE_SINGLETON_H_

#ifndef RODEO_CORE_MASTERMANAGER_H_
#include "core\mastermanager.h"
#endif    //RODEO_CORE_MASTERMANAGER_H_

#ifndef RODEO_SCENE_SCENE_H_
#include "scene\scene.h"
#endif    //RODEO_SCENE_SCENE_H_

/*
#ifndef LIST_H_
#include <list>
#endif    //LIST_H_
*/
namespace rodeocore
{
class SceneManager : public Singleton<SceneManager>, public MasterManager
{
public:
    SceneManager()
    {
        init();
    }

    virtual ~SceneManager()
    {
        clear();
    }

    virtual void render();

    virtual void update(float dt);

    //virtual void onIdle();

    //void addChild(rodeoentity::Entity* entity);

    //void removeChild(rodeoentity::Entity* entity);

    //void removeChildren();

    rodeoscene::Scene* getScene()const { return scene_; }

protected:
    void init();
    void clear();

//==== MEMBERS ====//
private:
    rodeoscene::Scene* scene_;
};
}    //end of rodeocore namespace

#endif    //RODEO_CORE_SCENEMANAGER_H